﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoBD;
using System.Data;
using System.Data.SqlClient;


namespace GAIA_Logica
{

    public class Estudio
    {
        #region Atributos
        /// <summary>
        /// Atributos de la clase
        /// </summary>
        /// 
        private int codEstudio;
        public int CodEstudio
        {
            get { return codEstudio; }
            set { codEstudio = value; }
        }

        private string codCliente;
        public string CodCliente
        {
            get { return codCliente; }
            set { codCliente = value; }
        }

        private DateTime fecha;
        public DateTime Fecha
        {
            get { return fecha; }
            set { fecha = value; }
        }

        private int habilitado = 1;
        public int Habilitado
        {
            get { return habilitado; }
            set { habilitado = value; }
        }

        private Segmento terreno;
        public Segmento Terreno
        {
            get { return terreno; }
            set { terreno = value; }
        }

        private Elemento listaElementos;
        public Elemento ListaElementos
        {
            get { return listaElementos; }
            set { listaElementos = value; }
        }

        private Clientes cliente;
        public Clientes Cliente
        {
            get { return cliente; }
            set { cliente = value; }
        }

        //Conexion a base de datos
        private AcessoBD dba = new AcessoBD(Properties.Settings.Default.GAIA_CON);
        
        #endregion

        #region Constructor
        public Estudio(string pidCliente, int pidTerreno)
        {
           /* setCliente(pidCliente);*/
            terreno = new Segmento();
            terreno.getSegmento(pidTerreno);
            CodCliente = pidCliente;
            Fecha = DateTime.Now;            
        }

        //Default
        public Estudio() { 
        
        }
        #endregion


        #region Metodos


        //Ingresar Estudio
        public bool ingrearEstudio() {
            bool result = false;

            string sqlQuery = "Insert into CensoTerrenosClientes values (param2,param3,param4,param5)";

            //Lista parametros
            Parametros [] parametros=new Parametros[4];
            //parametros[0] = new Parametros(this.CodEstudio, "param1");
            parametros[0] = new Parametros(this.CodCliente, "param2");
            parametros[1] = new Parametros(this.Terreno.Id, "param3");
            parametros[2] = new Parametros(this.Fecha, "param4");
            parametros[3] = new Parametros(this.Habilitado, "param5");

            try
            {
                //result=dba.executeSQL(sqlQuery, parametros);
                int idReturn = dba.executeSQLInsert(sqlQuery, parametros);
                //Le asigna el id generado
                this.CodEstudio = idReturn;
                result = true;
            }
            catch (Exception ex) {
                throw new Exception("Ocurrio un error a la hora de ingresar el estudio: "+ex.Message);
            }
            
            return result;
        }

        public List<Estudio> getEstudiosCliente(string pcodCliente){

            List<Estudio> listaEstudios = new List<Estudio>();

            string sqlQuery="select a.cod_estudio,CONVERT(VARCHAR(10), a.fecha, 101) as fecha,b.nombre +' '+b.apellido1+' '+b.apellido2 as nombre,b.codigo"+
                            " from CensoTerrenosClientes a,Clientes b"+
                            " where a.cod_cliente='"+pcodCliente+"'"+
                            " and a.cod_Cliente=b.codigo ";

         try
            {

               SqlDataReader rs=dba.execute_Consulta(sqlQuery, null);

               if (rs != null) {
                   while (rs.Read()) {
                       Estudio objEstudio = new Estudio();
                   }
                
               } 
                   
            }
            catch (Exception ex) {
                throw new Exception("Ocurrio un error a la hora de obtener los estudios: "+ex.Message);
            }

         return listaEstudios;

        }

        /// <summary>
        /// Obtener objeto Clientes asociado al 
        /// estudio actual
        /// </summary>
        /// <param name="pid"></param>
        /// <returns></returns>
        public bool getEstudioxId(int pid)
        {
            bool result = false;
            try
            {

                //Query
                String sqlQuery = "select * from CensoTerrenosClientes where cod_estudio='" + pid + "'";
                SqlDataReader rs = dba.execute_Consulta(sqlQuery, null);

                if (rs != null)
                {

                    while (rs.Read())
                    {
                        this.cliente = new Clientes();
                        cliente = cliente.getClienteXCodigo(rs.GetString(rs.GetOrdinal("cod_cliente")));
                        this.fecha = rs.GetDateTime(rs.GetOrdinal("fecha"));
                        this.terreno = new Segmento();
                        terreno.getSegmento(rs.GetInt32(rs.GetOrdinal("id_terreno")));
                        this.CodEstudio = rs.GetInt32(rs.GetOrdinal("cod_estudio"));
                    }
                }
                result = true;
            }
            catch (Exception ex)
            {
                throw new Exception("No hay coincidencias:" + ex.Message);
            }

            return result;

        }

        public bool borrarEstudio() {
            bool result = false;

            string sqlQuery = "Delete from CensoTerrenosClientes where cod_estudio = param1";

            //Lista parametros
            Parametros[] parametros = new Parametros[1];
            parametros[0] = new Parametros(this.CodEstudio, "param1");

            try
            {
                result = dba.executeSQL(sqlQuery, parametros);
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error a la hora de actualizar/remover el estudio: " + ex.Message); //Borrar el estudio
            }

            return result;
        }

        /// <summary>
        /// Eliminar todos los elementos asociados a un estudio(censo)
        /// </summary>
        /// <returns></returns>
        public bool eliminarInventario()
        {
            bool result = false;

            string sqlQuery = "Delete from CensoTerrenosClientes where cod_estudio = param1";

            //Lista parametros
            Parametros[] parametros = new Parametros[1];
            parametros[0] = new Parametros(this.CodEstudio, "param1");

            try
            {
                result = dba.executeSQL(sqlQuery, parametros);
            }
            catch (Exception ex)
            {
                throw new Exception("Ocurrio un error a la hora de actualizar/remover el estudio: " + ex.Message); //Borrar el estudio
            }

            return result;
        }

        #endregion
    }

}

